#include <iostream>
using namespace std;
#include <pthread.h>
#include <unistd.h>
#include <sys/types.h>

void *threadFunc(void *arg)
{
    /* 线程分离 */
    pthread_detach(pthread_self());

    /* 子线程的Id号 */
    int cnt = 5;
    while (cnt--)
    {
        cout << "l am new thread id:" << pthread_self() << endl;
        sleep(1);
    }
#if 1
    /* 线程退出 */
    pthread_exit(NULL);
#else
    /* 进程退出 */
    _exit(0);
#endif
}

int main()
{
#if 1
    /* 进程号 */
    pid_t pid = getpid();
    cout << "pid:" << pid << endl;

    /* 线程号 */
    pthread_t threadId = pthread_self();
    cout << "threadId:" << threadId << endl;
#endif

    /* 创建线程 */
    pthread_t tid; /* 子线程的Id号 */
    int ret = pthread_create(&tid, NULL, threadFunc, NULL);
    if (ret != 0)
    {
        perror("thread create error:");
        exit(-1);
    }
    // cout << "tid:" << tid << endl;
#if 0
    /* 阻塞回收子线程资源 */
    pthread_join(tid, NULL);
#endif
    /* 主线程 / 主进程  */
    int cnt = 60;
    while (cnt--)
    {
        cout << "l am main process." << endl;
        sleep(1);
    }

    return 0;
}
